package com.whosly.mysql.protocol.connection;

import com.whosly.mysql.protocol.Capability;
import io.netty.buffer.ByteBuf;

/**
 * @author fengyang
 * @date 2023/8/17 下午10:00
 * @see <a href="yueny09@163.com">mailTo: yueny09@163.com</a>
 */
public interface IConnection
{
    Long getConnectionId();

    /**
     * client 连接是否具备某能力
     */
    boolean isClientCapabilityEnabled(Capability capability);

    /**
     * 连接是否具备某能力
     */
    boolean isServerCapabilityEnabled(Capability capability);

    boolean postMessage(byte[] msg);

    boolean postMessage(ByteBuf msg);

//    /**
//     * 返回客户端IP
//     * @return	IP
//     */
//    String getHost();
//
//    int getPort();
//
//    /**
//     * 返回客户端地址信息
//     *
//     * @return
//     */
//    String getClientIp();
//
//    /**
//     * 时区信息:   GMT+08:00
//     *
//     * MySQL support `-12:59` ~ `+13:00`
//     */
//    TimeZone getTimeZone();
//
//    /**
//     * 时区信息:   GMT+08:00
//     *
//     * MySQL support `-12:59` ~ `+13:00`
//     */
//    TimeZoneKey getTimeZoneKey();
//
//    long getCreateTime();
//
//    IConnContext getConnContext();
//
//    /**
//     * 获取 packetId 并 +1
//     */
//    byte addAndGetPacketId();
//
//    /**
//     * 获取 packetId
//     */
//    byte getPacketId();
//
//    /**
//     * 初始化 packetId
//     */
//    void resetPacketId(int newPacketId);
//
//    /**
//     * 连接中的 attributes Tag
//     */
//    Map<ConnectionAttributesTag, String> getExpectTags();
//
//    /**
//     * MYSQL  认证超时时间
//     */
//    Long getAuthTimeoutSecond();
//
//    void setTimeZone(TimeZone timeZone);
//
//    void setSession(Session session);
//
//    Session getSession();

}
